home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xslt;
-
- import java.util.Hashtable;
- import java.util.Vector;
- import org.apache.xalan.xpath.MutableNodeListImpl;
- import org.apache.xalan.xpath.XPathSupport;
- import org.w3c.dom.Node;
- import org.xml.sax.SAXException;
-
- class CountersTable extends Hashtable {
- private MutableNodeListImpl m_newFound = new MutableNodeListImpl();
- int m_countersMade;
-
- Vector getCounters(ElemNumber var1) {
- Vector var2 = (Vector)((Hashtable)this).get(var1);
- return var2 == null ? this.putElemNumber(var1) : var2;
- }
-
- Vector putElemNumber(ElemNumber var1) {
- Vector var2 = new Vector();
- ((Hashtable)this).put(var1, var2);
- return var2;
- }
-
- void appendBtoFList(MutableNodeListImpl var1, MutableNodeListImpl var2) {
- int var3 = var2.getLength();
-
- for(int var4 = var3 - 1; var4 >= 0; --var4) {
- var1.addNode(var2.item(var4));
- }
-
- }
-
- int countNode(XPathSupport var1, ElemNumber var2, Node var3) throws SAXException {
- int var4 = 0;
- Vector var5 = this.getCounters(var2);
- int var6 = var5.size();
- var2.getCountMatchPattern(var1, var3);
- Node var7 = var2.getTargetNode(var1, var3);
- if (var7 != null) {
- for(int var8 = 0; var8 < var6; ++var8) {
- Counter var9 = (Counter)var5.elementAt(var8);
- var4 = var9.getPreviouslyCounted(var1, var7);
- if (var4 > 0) {
- return var4;
- }
- }
-
- for(var4 = 0; var7 != null; var7 = var2.getPreviousNode(var1, var7)) {
- if (var4 != 0) {
- for(int var14 = 0; var14 < var6; ++var14) {
- Counter var10 = (Counter)var5.elementAt(var14);
- int var11 = var10.m_countNodes.getLength();
- if (var11 > 0 && var10.m_countNodes.item(var11 - 1).equals(var7)) {
- var4 += var11 + var10.m_countNodesStartCount;
- if (var11 > 0) {
- this.appendBtoFList(var10.m_countNodes, this.m_newFound);
- }
-
- this.m_newFound.removeAllElements();
- return var4;
- }
- }
- }
-
- this.m_newFound.addNode(var7);
- ++var4;
- }
-
- Counter var15 = new Counter(var2);
- ++this.m_countersMade;
- this.appendBtoFList(var15.m_countNodes, this.m_newFound);
- this.m_newFound.removeAllElements();
- var5.addElement(var15);
- }
-
- return var4;
- }
- }
-